package com.lqk.composite;

import java.util.ArrayList;
import java.util.List;

/**
 * @author lqk
 * @date 2021/12/6 16:10
 *
 * University 就是 Composite ，可以管理 College
 * Composite:非叶子节点， 用于存储子部件，在Component接口中实现子部件的相关操作，比如增加(add),删除。。
 */
public class University extends OrganizationComponent {

    // 存放的是 College
    List<OrganizationComponent> organizationComponents = new ArrayList<>();

    // 构造器
    public University(String name, String des) {
        super(name, des);
    }
    // 重写 add 方法
    @Override
    protected void add(OrganizationComponent organizationComponent) {
        organizationComponents.add(organizationComponent);
    }
    // 重写 remove 方法
    @Override
    protected void remove(OrganizationComponent organizationComponent) {
        organizationComponents.remove(organizationComponent);
    }

    @Override
    public String getName() {
        return super.getName();
    }

    @Override
    public String getDes() {
        return super.getDes();
    }

    // print 方法就是输出 University 下包含的学院
    @Override
    public void print() {
        System.out.println("--------------"+getName()+"--------------");
        // 遍历所有的学院
        organizationComponents.forEach(OrganizationComponent::print);
    }
}
